interface\r
\r
uses\r
- TypInfo, gnugettext, gnugettextDx,\r
+ gnugettext, TypInfo, delphi, \r
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,\r
StdCtrls, Buttons, ExtCtrls,\r
common, utils, ImgList, ActnList, Menus, ComCtrls, ToolWin;\r
acFileChangeLanguage: TAction;\r
Changelanguage1: TMenuItem;\r
N5: TMenuItem;\r
+ acFileExportCSV: TAction;\r
+ Createoptionscsv1: TMenuItem;\r
+ File1: TMenuItem;\r
+ Createoptionscsv2: TMenuItem;\r
+ sdOptional: TSaveDialog;\r
procedure FormShow(Sender: TObject);\r
procedure FormCreate(Sender: TObject);\r
procedure OpenButtonClick(Sender: TObject);\r
procedure acFileOutputToScreenExecute(Sender: TObject);\r
procedure acDebugCreatePoExecute(Sender: TObject);\r
procedure acFileChangeLanguageExecute(Sender: TObject);\r
+ procedure acFileExportCSVExecute(Sender: TObject);\r
+ procedure cbOutputDeviceChange(Sender: TObject);\r
+ procedure cbInputDeviceChange(Sender: TObject);\r
private\r
{ Private-Deklarationen }\r
FCaps: TCapabilities;\r
FLang: TStringList;\r
FFirstShow: Boolean;\r
FOutHandmade: Boolean;\r
+ FFmtIn, FFmtOut: string;\r
procedure AddToOutput(const Str: string);\r
procedure AddToOutputFmt(const Format: string; const Args: array of const);\r
procedure ComboBoxChanged(const Format: string; IsInput, IsFile: Boolean);\r
procedure EnableOptions(const Version: string);\r
function HandleOptions(const Format: string; AObject: TObject; IsInput: Boolean): Boolean;\r
function HandleOptionsDlg(const Format: string; var str: string; IsInput: Boolean): Boolean;\r
+ procedure HandleParams;\r
procedure HistoryChanged(Box: TComboBox; Swap: Boolean = False);\r
procedure InitCombo(Target: TComboBox; IsInput, ForDevice: Boolean);\r
procedure LoadLanguages;\r
procedure LoadFileFormats;\r
procedure LoadVersion;\r
+ procedure RefreshDesign(FirstTime: Boolean = False);\r
procedure WMOPTIONSCHANGED(var Msg: TMessage); message WM_OPTIONS_CHANGED;\r
procedure WMSTARTUP(var Msg: TMessage); message WM_STARTUP;\r
procedure StoreProfiles;\r
implementation\r
\r
uses\r
- filter, about, readme, options;\r
+ filter, about, readme, options, select;\r
\r
{$R *.DFM}\r
\r
\r
{ TfrmMain }\r
\r
-procedure TfrmMain.FormCreate(Sender: TObject);\r
+procedure TfrmMain.RefreshDesign(FirstTime: Boolean);\r
begin\r
- TP_Ignore(mnuDebug, 'mnuDebug');\r
-{$IFOPT D-}\r
- mnuDebug.Visible := False;\r
-{$ENDIF}\r
- TranslateComponent(SELF);\r
- LoadLanguages;\r
-\r
- FFirstShow := True;\r
+ if not(FirstTime) then\r
+ ReTranslateComponent(SELF);\r
\r
// VS_FF_DEBUG The file contains debugging information or is compiled with debugging features enabled.\r
// VS_FF_INFOINFERRED The file's version structure was created dynamically;\r
else if (CFixedFileinfo.dwFileFlags and VS_FF_SPECIALBUILD <> 0) then\r
Caption := Format('%s (%s)', [Caption, _('Special release')]);\r
\r
- memoOutput.Lines.Clear;\r
-\r
- FCaps := TCapabilities.Create;\r
- FOpts := TOptions.Create(FCaps);\r
-\r
- OpenDialog.InitialDir := ReadProfile(OpenDialog.Tag);\r
- SaveDialog.InitialDir := ReadProfile(SaveDialog.Tag);\r
-\r
- if not ComboBoxSelect(cbInputDevice, ReadProfile(cbInputDevice.Tag)) then\r
- cbInputDevice.ItemIndex := 0;\r
-\r
- if not ComboBoxSelect(cbOutputDevice, ReadProfile(cbOutputDevice.Tag)) then\r
- cbOutputDevice.ItemIndex := 0;\r
-\r
FixAlign(sbOpenFile, 8);\r
FixAlign(sbSaveFile, 8);\r
FixAlign(edInputFile, 8, sbOpenFile);\r
FixAlign(btnProcess, 8);\r
FixAlign(btnFilter, 16, btnProcess);\r
\r
+ gbInput.Caption := '>>> ' + _('Input');\r
+ gbOutput.Caption := '<<< ' + _('Output');\r
+ chbInputDevice.Caption := '[' + chbInputDevice.Caption + ']';\r
+ chbOutputDevice.Caption := '[' + chbOutputDevice.Caption + ']';\r
+\r
+ acOptionsSourceFormat.Caption := _('Input') + ': ' + FFmtIn;\r
+ acOptionsTargetFormat.Caption := _('Output') + ': ' + FFmtOut;\r
+\r
+ btnInputOpts.Caption := '';\r
+ btnOutputOpts.Caption := '';\r
+end;\r
+\r
+procedure TfrmMain.FormCreate(Sender: TObject);\r
+begin\r
+ MakeFirstTranslation(Self);\r
+\r
+ FFirstShow := True;\r
+\r
+ TP_Ignore(mnuDebug, 'mnuDebug');\r
+{$IFOPT D-}\r
+ mnuDebug.Visible := False;\r
+{$ENDIF}\r
+ LoadLanguages;\r
+\r
+ memoOutput.Lines.Clear;\r
+\r
+ FCaps := TCapabilities.Create;\r
+ FOpts := TOptions.Create(FCaps);\r
+\r
+ OpenDialog.InitialDir := ReadProfile(OpenDialog.Tag);\r
+ SaveDialog.InitialDir := ReadProfile(SaveDialog.Tag);\r
+\r
+ if not ComboBoxSelect(cbInputDevice, ReadProfile(cbInputDevice.Tag)) then\r
+ cbInputDevice.ItemIndex := 0;\r
+\r
+ if not ComboBoxSelect(cbOutputDevice, ReadProfile(cbOutputDevice.Tag)) then\r
+ cbOutputDevice.ItemIndex := 0;\r
+\r
edInputFile.Text := ReadProfile(edInputFile.Tag);\r
\r
cbInputLang.ItemIndex := 0;\r
\r
Application.OnIdle := Self.DoOnIdle;\r
\r
- gbInput.Caption := '>>> ' + _('Input');\r
- gbOutput.Caption := '<<< ' + _('Output');\r
-\r
- chbInputDevice.Caption := '[' + chbInputDevice.Caption + ']';\r
- chbOutputDevice.Caption := '[' + chbOutputDevice.Caption + ']';\r
+ RefreshDesign(True);\r
+ HandleParams;\r
end;\r
\r
procedure TfrmMain.LoadLanguages;\r
FLang := TStringList.Create;\r
\r
DefaultInstance.GetListOfLanguages('default', FLang);\r
- if (FLang.IndexOf('en') < 0) then FLang.Add('en');\r
+ if (FLang.IndexOf('en') < 0) then\r
+ FLang.Add('en');\r
acFileChangeLanguage.Visible := (FLang.Count > 1);\r
end;\r
\r
\r
if IsInput then\r
begin\r
+ FFmtIn := Format;\r
wptInputOK.Enabled := (caps and 1 <> 0);\r
trkInputOK.Enabled := (caps and 4 <> 0);\r
rteInputOK.Enabled := (caps and 16 <> 0);\r
end\r
else\r
begin\r
+ FFmtOut := Format;\r
wptOutputOK.Enabled := (caps and 2 <> 0);\r
trkOutputOK.Enabled := (caps and 8 <> 0);\r
rteOutputOK.Enabled := (caps and 32 <> 0);\r
procedure TfrmMain.CheckInput;\r
begin\r
acConvert.Enabled :=\r
+ (cbWaypoints.Checked or cbRoutes.Checked or cbTracks.Checked)\r
+ and\r
+ (\r
((chbInputDevice.Checked and\r
(cbInputDevice.Text <> '') and\r
(cbInputFormatDevice.Text <> ''))\r
or\r
(not(chbOutputDevice.Checked) and\r
(edOutputFile.Text <> '') and\r
- (cbOutputFormat.Text <> '')));\r
+ (cbOutputFormat.Text <> '')))\r
+ );\r
end;\r
\r
procedure TfrmMain.edOutputFileChange(Sender: TObject);\r
s := 'gpsbabel.exe ' + cmdline;\r
AddToOutput(s);\r
\r
+ CSave := Cursor;\r
list := TStringList.Create;\r
try\r
- CSave := Cursor;\r
Cursor := crHourGlass;\r
Application.ProcessMessages;\r
Sleep(50);\r
cbInputDevice.Visible := True;\r
cbInputFormatDevice.Visible := True;\r
lbInputFile.Caption := _('Port');\r
+ FFmtIn := cbInputFormatDevice.Text;\r
end\r
else\r
begin\r
cbInputDevice.Visible := False;\r
sbOpenFile.Visible := True;\r
lbInputFile.Caption := _('File');\r
+ FFmtIn := cbInputFormat.Text;\r
end;\r
+ acOptionsSourceFormat.Caption := _('Input') + ': ' + FFmtIn;\r
+ acOptionsSourceFormat.Enabled := (FOpts.FormatOpts(FFmtIn) <> nil);\r
CheckInput;\r
end;\r
\r
sbSaveFile.Visible := False;\r
cbOutputFormat.Visible := False;\r
lbOutputFile.Caption := _('Port');\r
+ FFmtOut := cbOutputFormatDevice.Text;\r
end\r
else\r
begin\r
cbOutputDevice.Visible := False;\r
cbOutputFormatDevice.Visible := False;\r
lbOutputFile.Caption := _('File');\r
+ FFmtOut := cbOutputFormat.Text;\r
end;\r
+ acOptionsTargetFormat.Caption := _('Output') + ': ' + FFmtOut;\r
+ acOptionsTargetFormat.Enabled := (FOpts.FormatOpts(FFmtOut) <> nil);\r
CheckInput;\r
end;\r
\r
procedure TfrmMain.acHelpReadmeExecute(Sender: TObject);\r
begin\r
+ if (frmReadme = nil) then\r
+ Application.CreateForm(TfrmReadme, frmReadme);\r
frmReadme.ShowModal;\r
end;\r
\r
HistoryChanged(edOutputFile);\r
edOutputFile.Text := '-';\r
edOutputFile.Enabled := False;\r
+ edOutputFile.Color := clInactiveBorder;\r
sbSaveFile.Enabled := False;\r
end\r
else\r
begin\r
+ edOutputFile.Color := edInputFile.Color;\r
chbOutputDevice.Enabled := True;\r
edOutputFile.Enabled := True;\r
HistoryChanged(edOutputFile, True);\r
CheckInput;\r
end;\r
\r
+procedure TfrmMain.HandleParams;\r
+var\r
+ i: Integer;\r
+ s: string;\r
+begin\r
+ for i := 1 to ParamCount do\r
+ begin\r
+ s := ParamStr(i);\r
+ if (i = 0) then\r
+ edInputFile.Text := s\r
+ else begin\r
+ if (i = 1) then\r
+ edInputFile.Items.Add(edInputFile.Text);\r
+ edInputFile.Items.Add(s);\r
+ end;\r
+ end;\r
+end;\r
+\r
procedure TfrmMain.HistoryChanged(Box: TComboBox; Swap: Boolean);\r
var\r
index: Integer;\r
i, j, len: Integer;\r
s: string;\r
f: TFileStream;\r
+\r
+ procedure WriteLn(Str: string);\r
+ begin\r
+ Str := Str + #13#10;\r
+ f.Write(PChar(Str)^, Length(Str));\r
+ end;\r
+\r
begin\r
l := TStringList.Create;\r
try\r
FOpts.DebugGetHints(l);\r
- f := TFileStream.Create('options\options.inc', fmCreate);\r
+ f := TFileStream.Create('..\gpsbabel.po', fmCreate);\r
try\r
- s := '{gnugetext: scan-all text-domain=''options''}'#13#10#13#10;\r
- f.Write(PChar(s)^, Length(s));\r
- s := 'const'#13#10;\r
- f.Write(PChar(s)^, Length(s));\r
+ WriteLn('msgid ""');\r
+ WriteLn('msgstr ""');\r
+ WriteLn('');\r
\r
for i := 0 to l.Count - 1 do\r
begin\r
len := Length(s);\r
for j := len downto 1 do\r
begin\r
- if (s[j] = '''') then\r
+ if (s[j] = '"') then\r
begin\r
- Insert('''', s, j);\r
+ Insert('\', s, j);\r
end;\r
end;\r
- s := Format('resourcestring option_%d=''%s'';'#13#10, [i, s]);\r
- f.Write(PChar(s)^, Length(s));\r
+ WriteLn('msgid "' + s + '"');\r
+ WriteLn('msgstr ""');\r
+ WriteLn('');\r
end;\r
-\r
- s := #13#10'{gnugettext: reset }'#13#10;\r
- f.Write(PChar(s)^, Length(s));\r
finally\r
f.Free;\r
end;\r
\r
procedure TfrmMain.acFileChangeLanguageExecute(Sender: TObject);\r
var\r
- i: Integer;\r
- s: string;\r
+ lang: string;\r
+ form: TForm;\r
+ title: string;\r
begin\r
- for i := 0 to FLang.Count - 1 do\r
+ Title := _('Choose language') + ' ' + _('for GUIBabelGUI');\r
+ if SelectLanguage(Title, FLang, lang) and\r
+ (CompareText(lang, Copy(GetCurrentLanguage, 1, 2)) <> 0) then\r
begin\r
- s := FLang.Strings[i];\r
- if (s = '') then\r
- Halt(1);\r
+ StoreProfile(11, lang);\r
+ UseLanguage(lang);\r
+ RefreshDesign;\r
+ form := frmFilter;\r
+ frmFilter := nil;\r
+ if (Form <> nil) then Form.Release;\r
+ form := frmReadme;\r
+ frmReadme := nil;\r
+ if (Form <> nil) then Form.Release;\r
+ form := frmAbout;\r
+ frmAbout := nil;\r
+ if (Form <> nil) then Form.Release;\r
end;\r
end;\r
\r
+procedure TfrmMain.acFileExportCSVExecute(Sender: TObject);\r
+const\r
+ init_dir: string = '';\r
+ file_name: string = 'gpsbabel.csv';\r
+var\r
+ i, j, len: Integer;\r
+ s, lang, curr_lang: string;\r
+ o: POption;\r
+ f: TFileStream;\r
+ l: TStrings;\r
+\r
+ function _translate(const Domain, MsgID: string): WideString;\r
+ var\r
+ i: Integer;\r
+ tmp: WideString;\r
+ boo: Boolean;\r
+ begin\r
+ tmp := MsgID;\r
+ Result := dgettext(Domain, tmp);\r
+ if (Result = tmp) then\r
+ Result := _(MsgID);\r
+ if (Result = tmp) then\r
+ Result := ''\r
+ else begin\r
+ boo := False;\r
+ i := Length(Result);\r
+ while (i >= 1) do\r
+ begin\r
+ if (Result[i] = '"') then\r
+ begin\r
+ Insert('"', Result, i);\r
+ boo := True;\r
+ end;\r
+ Dec(i);\r
+ end;\r
+ if (boo) then\r
+ begin\r
+ memoOutput.Lines.Add('Warning: ''"'' found in translation!');\r
+ memoOutput.Lines.Add(Result);\r
+ end;\r
+ end;\r
+ end;\r
+\r
+ procedure _line(const Prefix, MsgID: string);\r
+ begin\r
+ UniWriteLn(f, Prefix + ',"' + MsgID + '","' +\r
+ _translate(GPSBabel_Domain, MsgID) + '"');\r
+ end;\r
+\r
+begin\r
+ if not SelectLanguage(\r
+ _('Choose language') + ' ' + _('for export'),\r
+ FLang, lang) then Exit;\r
+\r
+ if (sdOptional.InitialDir = '') then\r
+ GetDir(0, init_dir);\r
+\r
+ sdOptional.InitialDir := init_dir;\r
+ sdOptional.FileName := file_name;\r
+\r
+ if not(sdOptional.Execute) then Exit;\r
+\r
+ init_dir := sdOptional.InitialDir;\r
+ file_name := sdOptional.FileName;\r
+ \r
+ curr_lang := GetCurrentLanguage;\r
+ try\r
+\r
+ UseLanguage(lang);\r
+\r
+ f := TFileStream.Create(sdOptional.FileName, fmCreate);\r
+ try\r
+\r
+ UniWriteLn(f, Format('code,en,%s', [lang]));\r
+\r
+ _line('options:-w', 'Process waypoint information');\r
+ _line('options:-r', 'Process route information');\r
+ _line('options:-t', 'Process track information');\r
+\r
+ _line('options:-s', 'Synthesize shortnames');\r
+ _line('options:-c', 'Character set for next operation');\r
+\r
+\r
+ for i := 0 to FCaps.Count - 1 do\r
+ begin\r
+ if not FCaps.IsFile(i) then Continue;\r
+\r
+ s := FCaps.GetDescr(i);\r
+ UniWrite(f, Format('format:%s,', [FCaps.GetName(s)]));\r
+ UniWriteLn(f, '"' + s + '","' + _translate(GPSBabel_Domain, s) + '"');\r
+\r
+ l := FOpts.FormatOpts(s);\r
+ if (l = nil) then Continue;\r
+\r
+ for j := 0 to l.Count - 1 do\r
+ begin\r
+ o := Pointer(l.Objects[j]);\r
+ UniWrite(f, Format('format:%s:%s,', [o.format, o.name]));\r
+ UniWriteLn(f, '"' + o.hint + '","' + _translate(GPSBabel_Domain, o.hint) + '"');\r
+ end;\r
+ end;\r
+\r
+ finally\r
+ f.Free;\r
+ end;\r
+\r
+ finally\r
+ UseLanguage(curr_lang);\r
+ end;\r
+end;\r
+\r
+procedure TfrmMain.cbOutputDeviceChange(Sender: TObject);\r
+begin\r
+ CheckInput;\r
+end;\r
+\r
+procedure TfrmMain.cbInputDeviceChange(Sender: TObject);\r
+begin\r
+ CheckInput;\r
+end;\r
+\r
end.\r